---
title: 'Implement webhooks'
sidebarTitle: 'Implement webhooks'
description: 'Step by Step guide to listen to webhooks from external APIs'
---

Nango can process, or forward, webhooks from external APIs for you.

This guide explains how this works, and how you can set this up with your application.

## How webhooks work in Nango

When Nango receives a webhook from an external API, it first reconciles the webhook with the appropriate integration and [connection](/guides/use-cases/api-auth#what-is-a-connection%3F).

<Frame caption="How Nango routes webhooks from external APIs.">
  <img src="/images/diagrams/external-webhook-routing.png" />
</Frame>

Each external webhook is received on a unique Nango URL that corresponds to a specific integration. Here’s an example webhook URL:
```
https://api.nango.dev/webhook/d91981c1-257a-4a42-adb3-a849da15f0dc/hubspot
```

In this URL:
- The UUID (`d91981c1-257a-4a42-adb3-a849da15f0dc`) is specific to your Nango account.
- The integration ID (hubspot) identifies the integration receiving the webhook.

Once the integration is determined, Nango attributes the webhook to the correct connection. Each supported API has specific routing logic ([code](https://github.com/NangoHQ/nango/tree/master/packages/server/lib/webhook)) to extract identifying details from the webhook payload, which allows Nango to match it with a corresponding connection.

The same routing code contains the logic to verify the origin of the webhook for security purposes.

Based on your configuration, Nango will either [forward the webhook](/implementation-guides/webhooks/implement-webhooks#forwarding-webhooks-to-your-app) to your app as is, use it for [real-time syncing](/implementation-guides/syncs/realtime-syncs), or both. 

### Supported APIs

Nango currently has off-the-shelf support for the webhooks listed in this [folder](https://github.com/NangoHQ/nango/tree/master/packages/server/lib/webhook).

If you need webhook support for an API that is not listed there, please request it on the [Slack Community](https://nango.dev/slack) or your private Slack Connect channel with Nango. We can backfill webhooks support for most APIs fast.

## How to setup webhooks with your app

### Step 1 - Set up webhooks from Nango to your app

If you have not done so yet, set up webhooks from Nango to your app with our [implementation guide](/implementation-guides/platform/webhooks-from-nango).

### Step 2 - Register webhooks in the external API's portal

Most external APIs require you to register the URL for receiving webhooks in their developer portal.

Provide the Nango URL to receive webhooks, which is accessible in your integration settings in the Nango UI (_Integrations_ tab > pick an integration > _Settings_ sub-tab).

<Frame caption="Where to find the URL to receive external webhooks for a given integration.">
  <img src="/images/screenshots/configure-webhooks-in-external-api-portal.png" />
</Frame>

### Step 3 - Handle external webhook in Nango

Decide how you want Nango to handle webhooks from the external API:
- Forward the webhook to your app -> read on
- Trigger a sync in Nango based on the webhook -> follow the [realtime syncs implementation guide](/implementation-guides/syncs/realtime-syncs)
- Both: Forward & real-time sync -> read both

#### Forwarding webhooks to your app

By default Nango forwards all incoming webhooks to your app.

To disable this, go to _Environment Settings_ -> _Notification settings_ -> Disable "Forward webhooks from external APIs".

The forwarded webhook [has this payload](/implementation-guides/platform/webhooks-from-nango#external-webhook-forwarding).

<Tip>
**Questions, problems, feedback?** Please reach out in the [Slack community](https://nango.dev/slack).
</Tip>